// 1.object类型
// 2.Array类型
// 3.对象中的方法

// 对象的创建(第一种方法)
// var goods=new Object();//没有属性和行为的对象;
// // 1.为对象添加属性,通过对象名称+.+属性名进行声明
//    goods.name="香蕉";
//     goods['price']=10.3;
//     goods.number=100;
// // document.write(goods.name);
// // document.write(goods['price']);

// // 2.为对象添加行为（函数和方法）
// goods.input=function (){//匿名函数
// 	document.write("商品名称:"+goods.name+",商品价格:"+goods.price+",商品数量:"+goods.number);
// }
// 				goods.input();//调用函数的方法
// .........................................................................
// 对象的创建(第二种方法)
// key:value				
// 		var user={//字面量形式创建属性和行为/key:value键值对
// 			name:'wyw',
// 			age:18,
// 			sex:'男',
// 			music:function(){
// 				alert('巧了,我也会唱歌');
// 			}
// 		};

// 		document.write(user.name+user['sex']);
// 		user.music();
//..............................................................
//删除。。。		 
// var user=new Object();
//       user.name='wyw';

//       alert(user.name);
//       delete user.name;
//       alert(user.name);
      
// .............................................................

//获得对象属性,for in 遍历
// var user ={
// 	name:'wyw',
// 	age:18,
// }      

// for(attr in user){//attr 接受的是string类型属性的值
// 	document.write(user[attr]);
// }
// ..................................................................

// 堆和栈 只创建一个对象，两个变量只是拥有两个不同的地址，实则指向的是同一个对象
// var  userOne=new Object();
// var userTwo=userOne;//这里的赋值是将对象userone的地址给予usertwo;
// 	userOne.name="小鹿";
// 	userTwo.name="大鹿";
// 	document.write(userOne.name+","+userTwo.name);//大鹿 大鹿
//........................................................................

//
 //相同属性的对象称为一类
 //构造函数
// function People(name,age,sex){
// 		this.name=name;
// 		this.age=age;
// 		this.sex=sex;
// }
// var red =new People('红',15,'女');
// var blue=new People('蓝',16,'男');
// var pink =new People('粉',17,'女');
// document.write(red.name+','+blue.age+','+pink.sex);
//............................................................................


//2017.3.15..................................
//面向对象编程/面向对象编程/面向对象编程/面向对象编程/面向对象编程/面向对象编程/面向对象编程/面向对象编程/面向对象编程
// var box=new Object();
// box.name='wyw';
// box.age=19;
// box.run=function(){
// 	document.write("名字"+this.name+"年龄"+this.age);
// }
// 	box.run();
// //.........................................................
// var box2={
// 	age:10,
// 	name:'wyw',
// 	run:function(){
// 		document.write("名字"+this.name+"年龄"+this.age);

// 	}

// };
//  	box2.run();

//..................................................................
// function  creatObject(name,age){
// 	var obj=new Object();
// 	obj.name=name;
// 	obj.age;
// 	obj.run=function(){
// 		alert(this.name);
// 	};
// 	return obj;
// } 	
// 	var box1=creatObject("wyw",99);
// 	........................................................................
// 	
// 构造函数能够判断类别

// 	function people(name,age,sex){
// 		this.name=name;
// 		this.age=age;
// 		this.sex=sex;
// }
// 	function animal(name,age,sex){
// 			this.name=name;
// 			this.age=age;
// 			this.sex=sex;
// 	}

// 	var wyw=new people("wyw",22,"男");
// 	var wzx=new animal("wzx",21,"公");
// 	document.write(wyw instanceof animal);
//..........................................................................


// 数组Array..

// var arr=new Array(3);
// //在用new Array()只有一个参数时，代表声明的是它的长度。
// var arr1=[3];
// //代表一个值
// document.write(arr.length);
// document.write(arr1.length);
//..........................................
// var arr=[1,"dfs",true,new Object(),10];
// 数组没有类型限制，同一个数组可以放任意类型
// .........................................
// var arr=new Array[1,2,3,4,5];
// var arr[10]=10;
// ...............................................
// var arr=[5,7,1,6,8,9,2,12,3];
// var tem;
// 	for(i=0;i<arr.length;i++) {
// 		for(j=i+1;j<arr.length;j++){
// 			if (arr[i]<arr[j]) {
// 				tem=arr[i];
// 				arr[i]=arr[j];
// 				arr[j]=tem;
// 			}
// 		}	
		
// 	}
// 	document.write(arr+',');
// //.......................................................

//冒泡排序法。。
// function sort(){
// for(var i=0;i<arr.length;i++){
// 	for(var j=0;j<arr.length-i-1;j++){
// 		if (arr[j]>arr[j+1]){
// 			var tem=arr[j];
// 			arr[j]=arr[j+1];
// 			arr[j+1]=tem;
// 		}
// 	}
// }
// }
// var arr=[21,3,43,7,32,9];
// sort(arr);
// document.write(sort(arr));
// .........................................................

//最大值：
// function getMax(arr){
// 	var max=arr[0];
// 	for(var i=1,i<arr.length;i++){
// 		if (max<arr[i]) {
// 			max=arr[i];
// 		}

// 	}
// }
//.........................................................

// var box=[1,6,3,7,3,8,0,4];
// document.write(box.join('_______'));
//.....................................................................
//push在后面添加元素
// var box=[1,7,4,23,6,9,4,3,2];//Array数组
// var len =box.push(11,12,13);//修改后的length长度
// document.write(box);
//.............................................................
// pop移除数组结尾的元素
// var box=[1,7,4,23,6,9,4,3,2];
// var val =box.pop();//返回被移除的元素

// document.write('移除的是'+val+'</br>此时的数组是'+box)
// .............................................................
//shift移除数组开头的元素，并返回移除的元素
//.............................................................
//unshift向数组前端添加多个元素，并返回添加元素后的元素长度
//......................................................................
//reserve 将数组元素反序()返回修改后，数组形式的字符串
//.......................................................................
排序sort()
function test(arr,str){
	document.write("返回值"+str+"</br>当前数组"+arr);
}
function dome(a,b){
	return b-a;
}
var box=new Array(5,4,12,8,3,21);
var str=box.sort(dome);

test(box,str);
//.........................................................................
// concat()  返回合并后的新数组，不改变原数组
// function test(arr,str){
// 	document.write("返回值"+str+"</br>当前数组"+arr);
// }
// var box =new Array(1,6,2,7,3);
// var box1=[4,9,8];
// var box2=[11,12,21];
// var str=box.concat(box1,box2);
// test(box,str);
//....................................................................
// slice 一个参数时，从当前下标开始截取直到末尾，返回截取的一段
// 	  两个参数时，从当前下标开始截取直到第二个参数为止，(前包后不包);
// splice 删除功能： 两个参数时，第一个是删除的位置 ，第二个是删除的数量截取并删除所截的元素，返回被删除的元素	  
// 	   插入功能：第一个参数控制插入的位置，第二个参数必须设置为零，之后就输入要插入的元素(2,0,3,4)
// 	   替换功能：第一个控制替换的开始位置,第二个控制替换的个数,之后替换个数要与第二个参数一致(2,2,3,4)
// 	   //............................................................
// 	   
// MAth.floor()向下取整
// Math.random() 取0~1的随机数   


// function  box(){
// 	return 1;
// }
//  document.write(box());//输出的是return返回给函数的值,并非输出了函数